package paq_negocio;

import com.sun.rowset.CachedRowSetImpl;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.Stateless;
import paq_clase_interfaz.interfaz_profesor;
import paq_entidades.enti_profesor;
import paq_entidades.enti_tipo_usuario;
import paq_entidades.enti_variables;
import paq_sentencias.Ejecutarsql;

@Stateless
public class neg_profesor implements interfaz_profesor {

    enti_variables v = new enti_variables();
    Ejecutarsql ejec = new Ejecutarsql();
    enti_profesor entidad = new enti_profesor();
    enti_tipo_usuario tipoU = new enti_tipo_usuario();

    @Override
    public void insertar(String al_cedula, String al_nombres, String al_especialidad, String al_telefono1, String al_telefono2, String al_direccion_casa, String al_direccion_trabajo, String al_correo, String al_nacionalidad, String al_apellidos, String al_tipo, String al_contrato) {
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_email(al_correo);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_tipo(al_tipo);
        entidad.setPe_contrato(al_contrato);
        String sql = "insert into profesor(pr_cedula,pr_nombres,pr_especialidad,pr_telefono1,pr_telefono2,pr_direccion_casa,pr_direccion_trabajo,pr_correo,pr_nacionalidad,pr_apellidos,pr_tipo,pr_contrato,pr_estado) values('" + entidad.getPe_cedula() + "','" + entidad.getPe_nombres() + "','" + entidad.getPe_especialidad() + "','" + entidad.getPe_telefono1() + "','" + entidad.getPe_telefono2() + "','" + entidad.getPe_direccion_casa() + "','" + entidad.getPe_direccion_trabajo() + "','" + entidad.getPe_email() + "','" + entidad.getPe_nacionalidad() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_tipo() + "','" + entidad.getPe_contrato() + "','Activo')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void eliminar(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "delete from  profesor where pr_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public void actualizar(String al_cedula, String al_nombres, String al_especialidad, String al_telefono1, String al_telefono2, String al_direccion_casa, String al_direccion_trabajo, String al_correo, String al_nacionalidad, String al_apellidos, String al_tipo, String al_contrato) {
        entidad.setPe_cedula(al_cedula);
        entidad.setPe_nombres(al_nombres);
        entidad.setPe_especialidad(al_especialidad);
        entidad.setPe_telefono1(al_telefono1);
        entidad.setPe_telefono2(al_telefono2);
        entidad.setPe_direccion_casa(al_direccion_casa);
        entidad.setPe_direccion_trabajo(al_direccion_trabajo);
        entidad.setPe_email(al_correo);
        entidad.setPe_nacionalidad(al_nacionalidad);
        entidad.setPe_apellidos(al_apellidos);
        entidad.setPe_tipo(al_tipo);
        entidad.setPe_contrato(al_contrato);
        String sql = "update profesor set pr_nombres='" + entidad.getPe_nombres() + "',pr_apellidos='" + entidad.getPe_apellidos() + "',pr_especialidad='" + entidad.getPe_especialidad() + "',pr_telefono1='" + entidad.getPe_telefono1() + "',pr_telefono2='" + entidad.getPe_telefono2() + "',pr_direccion_casa='" + entidad.getPe_direccion_casa() + "',pr_direccion_trabajo='" + entidad.getPe_direccion_trabajo() + "',pr_correo='" + entidad.getPe_email() + "',pr_nacionalidad='" + entidad.getPe_nacionalidad() + "',pr_tipo='" + entidad.getPe_tipo() + "', pr_contrato='" + entidad.getPe_contrato() + "' where pr_cedula='" + entidad.getPe_cedula() + "' ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getLista() {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("select pr_correo from profesor");
        } catch (Exception ex) {
            Logger.getLogger(neg_profesor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public CachedRowSetImpl getListacomboprofesor() {
        try {
            v.crs = (CachedRowSetImpl) ejec.rellena2("select (pr.PR_APELLIDOS||' '||pr.pr_nombres) as pr_nombres,pr_cedula from profesor pr where pr.pr_estado='Activo' order by pr_nombres asc");
        } catch (Exception ex) {
            Logger.getLogger(neg_profesor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs;
    }

    @Override
    public String getMensajei() {
        String sdr = "";
        sdr = v.msm;
        return sdr;
    }

    @Override
    public CachedRowSetImpl getListaa() {
        try {
            v.crs2 = (CachedRowSetImpl) ejec.rellena2("select * from profesor order by pr_apellidos desc");
        } catch (Exception ex) {
            Logger.getLogger(neg_profesor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs2;
    }

    @Override
    public CachedRowSetImpl getcombocoordinador() {
        try {
            v.crs3 = (CachedRowSetImpl) ejec.rellena2("select (prof.pr_apellidos ||' '||prof.pr_nombres) as pr_nombres,pr_cedula from profesor prof where prof.pr_tipo='INTERNO' and prof.PR_ESTADO!='Inactivo' and prof.pr_contrato='TIEMPO_COMPLETO' AND prof.PR_CEDULA not in (select coordinador_programa.pr_cedula from COORDINADOR_PROGRAMA) order by prof.PR_APELLIDOS");
        } catch (Exception ex) {
            Logger.getLogger(neg_profesor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs3;
    }

    @Override
    public void insertarUsuario(String nombres, String apellidos, String nick, String tipoUsuario, String password, String correo) {
        entidad.setPe_nombres(nombres);
        entidad.setPe_apellidos(apellidos);
        entidad.setPe_cedula(nick);
        tipoU.setTu_codigo(tipoUsuario);
        entidad.setPe_passw(password);
        entidad.setPe_email(correo);
        String sql = "insert into Usuario (u_nombre,u_apellido,u_nick,tu_codigo,u_password,u_correo,u_estado) values('" + entidad.getPe_nombres() + "','" + entidad.getPe_apellidos() + "','" + entidad.getPe_cedula() + "','tu863','Espe.2013','" + entidad.getPe_email() + "','Activo')";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl datos_profesor(String cedula) {
        try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("select * from profesor where pr_cedula='" + cedula + "' ");
        } catch (Exception ex) {
            Logger.getLogger(neg_profesor.class.getName()).log(Level.SEVERE, null, ex);
        }
        return v.crs1;
    }
    //public void actualizar_p(String p_cedula,String p_correo,String p_especialidad,String p_telefono1,String p_telefono2,String p_direccion_casa,String p_direccion_trabajo,String p_nacionalidad);

    @Override
    public void actualizar_p(String p_cedula, String p_correo, String p_especialidad, String p_telefono1, String p_telefono2, String p_direccion_casa, String p_direccion_trabajo, String p_nacionalidad) {
        entidad.setPe_cedula(p_cedula);
        entidad.setPe_email(p_correo);
        entidad.setPe_especialidad(p_especialidad);
        entidad.setPe_telefono1(p_telefono1);
        entidad.setPe_telefono2(p_telefono2);
        entidad.setPe_direccion_casa(p_direccion_casa);
        entidad.setPe_direccion_trabajo(p_direccion_trabajo);
        entidad.setPe_nacionalidad(p_nacionalidad);
        String sql = "update profesor set pr_correo='" + entidad.getPe_email() + "',pr_especialidad='" + entidad.getPe_especialidad() + "',pr_telefono1='" + entidad.getPe_telefono1() + "',pr_telefono2='" + entidad.getPe_telefono2() + "',pr_direccion_casa='" + entidad.getPe_direccion_casa() + "',pr_direccion_trabajo='" + entidad.getPe_direccion_trabajo() + "',pr_nacionalidad='" + entidad.getPe_nacionalidad() + "' where pr_cedula='" + entidad.getPe_cedula() + "' ";
        ejec.ejecutar2(sql);
        v.msm = ejec.getMen();
    }

    @Override
    public CachedRowSetImpl getLista_por_promocion_p(String promocion) {
     try {
            v.crs1 = (CachedRowSetImpl) ejec.rellena2("select distinct pr.PR_NOMBRES,pr.PR_CEDULA,pr.PR_ESPECIALIDAD,pr.PR_TELEFONO1,pr.PR_TELEFONO2,pr.PR_DIRECCION_CASA,pr.PR_DIRECCION_TRABAJO,pr.PR_CORREO,pr.PR_NACIONALIDAD,pr.PR_TIPO,pr.PR_CONTRATO,pr.PR_APELLIDOS from FECHA_DIA fec, PROFESOR pr,PROGRAMA_POSTGRADO prog,PROMOCION promo where pr.pr_estado='Activo' and fec.PR_CEDULA=pr.PR_CEDULA and fec.PROM_CODIGO=promo.PROM_CODIGO and promo.PP_CODIGO=prog.PP_CODIGO and fec.PROM_CODIGO='"+ promocion +"'  order by pr.PR_APELLIDOS");
        } catch (Exception ex) {
            System.out.println("Error al recuperar lista de datos");
        }
        return v.crs1;
    }

    @Override
    public CachedRowSetImpl buscar_prof(String nick) {
        try {
            v.crs5 = (CachedRowSetImpl) ejec.rellena2("select * from profesor where pr_cedula='" + nick + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs5; 
    }

    @Override
    public CachedRowSetImpl buscar_prof_asignado_coordinador(String nick) {
        try {
            v.crs4 = (CachedRowSetImpl) ejec.rellena2("select * from coordinador_programa where pr_cedula='" + nick + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs4; 
    }

    @Override
    public void bloquear_profesor(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update profesor set pr_estado='Inactivo' where pr_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        bloquear_usuario(al_codigo);
        v.msm = ejec.getMen();
    }

    @Override
    public void desbloquear_profesor(String al_codigo) {
      entidad.setPe_cedula(al_codigo);
        String sql = "update profesor set pr_estado='Activo' where pr_cedula='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
        desbloquear_usuario(al_codigo);
        v.msm = ejec.getMen();
    }
     public void bloquear_usuario(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update usuario set u_estado='Inactivo' where u_nick='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
       
    }

    public void desbloquear_usuario(String al_codigo) {
        entidad.setPe_cedula(al_codigo);
        String sql = "update usuario set u_estado='Activo' where u_nick='" + entidad.getPe_cedula() + "'";
        ejec.ejecutar2(sql);
       
    }

    @Override
    public CachedRowSetImpl lista_profesores_timbraron(String cedula) {
        try {
            v.crs6 = (CachedRowSetImpl) ejec.rellena2("select distinct (pr.PR_APELLIDOS||' '||pr.pr_nombres) as pr_nombres,pr.pr_cedula from profesor pr,cronogramas_dictados cd,fecha_dia fd,promocion prom,programa_postgrado pp where pr.pr_estado='Activo' and cd.FD_CODIGO=fd.FD_CODIGO and fd.PR_CEDULA=pr.PR_CEDULA and fd.PROM_CODIGO=prom.PROM_CODIGO and pp.PP_CODIGO=prom.PP_CODIGO and pp.PR_CEDULA='"+cedula+"' order by pr_nombres asc");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs6; 
    }

    @Override
    public CachedRowSetImpl buscar_alumno(String cedula) {
      try {
            v.crs7 = (CachedRowSetImpl) ejec.rellena2("select al_cedula from alumno where al_cedula='" + cedula + "'");
        } catch (Exception ex) {
            System.out.println("No se encontro el dato buscado");
        }
        return v.crs7; 
    }
}
